#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
     connect(&dirPb,SIGNAL(clicked()),this,SLOT(clickDirPb()));//this ссылка на класс мэйнвиндоу
     connect(&savePb,SIGNAL(clicked()),this,SLOT(clickSavePb()));//слот - это функция, которая роботает по сигналу
     connect(&closePb,SIGNAL(clicked()),this,SLOT(clickClosePb()));
     connect(&cBox,SIGNAL(activated(int)),this,SLOT(clickcBox()));
}

MainWindow::~MainWindow()
{

}

void MainWindow::clickDirPb()
{
    dir = QFileDialog::getExistingDirectory(this,//пользователь выбирает некоторую директорию
                                            tr("Open Directory"),//открывает директорию(только папки), и не показывает ссылки
                                            "/home/Tortoise",
                                            QFileDialog::ShowDirsOnly |
                                            QFileDialog::DontResolveSymlinks);
    QDir direc(dir);//инициализируем ту директорию, которую выбрал польз
    QStringList filters;//переменная для фильтра(txt, h, cpp)

    filters << "*.cpp" << "*.txt" << "*.h";//наполняем переменную фильтрами нужными
    direc.setNameFilters(filters);//устанавливаем фильтры в класс qdir

    QStringList sList = direc.entryList(QDir::Files);//создаём переменную лист, для списка файлов, которые находятся в директории, которую выбрал пользователь

    cBox.addItems(sList);//в комбобокс добовляем этот лист

}
void MainWindow::clickcBox()
{
    qs = cBox.currentText();
    QFile pFile(dir + '/' + qs);//складываем строки с директорией которую выбрал пользватель, потом добовляем слэш и добовляем имя файла, инициализируем класс qfile, путём до нужного файла
    if (!pFile.open(QIODevice::ReadOnly | QIODevice::Text))//открывем необходимый файла для чтения, и поймём что там находится текст(если файл открывется - хорошо, если нет - функция завершает свою работу)
             return;

    QByteArray line = pFile.readAll();//считываем всё из файла
    tEdit.setText(line);//устанавливаем в текстэдит весь текст, который считали
    pFile.close();
}

void MainWindow::clickClosePb()
{
   this->close();
}

void MainWindow::clickSavePb()
{
    QString file = tEdit.toPlainText();//считываем всё с текст эдита
    QFile pFile(dir + '/' + qs);//инициализируем путём до файла
    if (!pFile.open(QIODevice::WriteOnly | QIODevice::Text))//откр для записи
             return;
    pFile.write((const char *)file.toAscii().data());//записываем это в файл
    pFile.close();
}
